登录 白背景

506. 相对名次

https://leetcode-cn.com/problems/relative-ranks/

  • 提交时间:2021-12-01 03:45:23
  • 执行用时:12 ms, 在所有 Go 提交中击败了81.55%的用户
  • 内存消耗:6.4 MB, 在所有 Go 提交中击败了54.37%的用户
  • 通过测试用例:17 / 17
var gold []string = []string{
    "Gold Medal",
    "Silver Medal",
    "Bronze Medal",
}

type Arr []int

func (t Arr) Len() int {
    return len(t)
}
func (t Arr) Less(i, j int) bool {
    //正序
    // return t[i] < t[j]
    //逆序
    return t[i] > t[j]
}
func (t Arr) Swap(i, j int) {
    t[i], t[j] = t[j], t[i]
}

func findRelativeRanks(score []int) (ans []string) {
    var scoreArr Arr = append([]int(nil), score...)
    sort.Sort(scoreArr)
    // fmt.Printf("scoreArr:%+v\n", scoreArr)

    //分数 名次
    goldMap := map[int]int{}
    for ranking, scoreItem := range scoreArr {
        goldMap[scoreItem] = ranking
    }
    for _, scoreItem := range score {
        if ranking := goldMap[scoreItem]; ranking > 2 {
            ans = append(ans, strconv.Itoa(ranking+1))
        } else {
            ans = append(ans, gold[ranking])
        }
    }
    // fmt.Printf("score:%+v\n", score)
    return
}